home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 4490 / 4490.xpi / chrome / wmn.jar / content / wmn-overlay.js < prev    next >
Text File  |  2010-01-27  |  8KB  |  195 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is WebMail Notifier.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Byungwook Kang.
  18.  * Portions created by the Initial Developer are Copyright (C) 2007
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *
  23.  * Alternatively, the contents of this file may be used under the terms of
  24.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  25.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  26.  * in which case the provisions of the GPL or the LGPL are applicable instead
  27.  * of those above. If you wish to allow use of your version of this file only
  28.  * under the terms of either the GPL or the LGPL, and not to allow others to
  29.  * use your version of this file under the terms of the MPL, indicate your
  30.  * decision by deleting the provisions above and replace them with the notice
  31.  * and other provisions required by the GPL or the LGPL. If you do not delete
  32.  * the provisions above, a recipient may use your version of this file under
  33.  * the terms of any one of the MPL, the GPL or the LGPL.
  34.  *
  35.  * ***** END LICENSE BLOCK ***** */
  36. const dout=Components.utils.reportError;
  37.  
  38. var wmnSb={
  39.   init:function(){
  40.     var tree=document.getElementById("placesList").lastChild;
  41.     while(tree.firstChild != null)tree.removeChild(tree.firstChild);
  42.     var n=this.nsIWebMailNotifier.getAccountsNumber();
  43.     for(var i=0;i<n;i++){
  44.       if(!this.nsIWebMailNotifier.isAccountEnabled(i))continue;
  45.       var ar=this.nsIWebMailNotifier.getAccountInfo({},i);
  46.       var o={host:ar[0],user:ar[1],ind:i};
  47.       if(this.nsIWebMailNotifier.getAccountsInHost(o.host)==1){
  48.         var em=this.createItem(this.nsIWebMailNotifier.getHostName(o.host),o.ind);
  49.         em.firstChild.firstChild.setAttribute("src",this.nsIWebMailNotifier.getIconURL(o.host,o.user));
  50.         em.setAttribute("newMail",false);
  51.         tree.appendChild(em);
  52.       }else{
  53.         var hostEm=document.getElementById(escape(o.host));
  54.         if(!hostEm){
  55.           hostEm=this.createItem(this.nsIWebMailNotifier.getHostName(o.host),escape(o.host),true);
  56.           hostEm.firstChild.firstChild.setAttribute("src",this.nsIWebMailNotifier.getIconURL(o.host,o.user));
  57.           tree.appendChild(hostEm);
  58.           hostEm=hostEm.lastChild;
  59.         }
  60.         var em=this.createItem(o.user,o.ind);
  61.         em.setAttribute("newMail",false);
  62.         hostEm.appendChild(em);
  63.       }
  64.     }
  65.     if(typeof(onWinLoad)!="undefined")onWinLoad();
  66.   },
  67.   createItem:function(label,id,isContainer){
  68.     var tc=document.createElement("treecell");
  69.     tc.setAttribute("label",label);
  70.     var tr=document.createElement("treerow");
  71.     tr.appendChild(tc);
  72.     var tc2=document.createElement("treecell");
  73.     if(!isContainer){
  74.       tc.setAttribute("properties","label logoff");
  75.       tc.setAttribute("id","lb"+id);
  76.       //tc.setAttribute("src","http://webmailnotifier.mozdev.org/favicon.ico");
  77.       tc2.setAttribute("label","");
  78.       tc2.setAttribute("properties","logoff");
  79.       tc2.setAttribute("id",id);
  80.       tc2.setAttribute("value",id);
  81.     }
  82.     tr.appendChild(tc2);
  83.     var ti=document.createElement("treeitem");
  84.     ti.appendChild(tr);
  85.     if(isContainer){
  86.       ti.setAttribute("container",true);
  87.       ti.setAttribute("open",true);
  88.       var tch=document.createElement("treechildren");
  89.       tch.setAttribute("id",id);
  90.       ti.appendChild(tch);
  91.     }else{
  92.       ti.setAttribute("id","cnt"+id);
  93.       tc.setAttribute("value",id);
  94.     }
  95.     return ti;
  96.   },
  97.   onTreeClicked: function(event){
  98.     // right-clicks are not handled here
  99.     if (event.button == 2)
  100.       return;
  101.     var tree = document.getElementById("placesList");
  102.     var tbo = tree.treeBoxObject;
  103.     var row = { }, col = { }, child = { };
  104.     tbo.getCellAt(event.clientX, event.clientY, row, col, child);
  105.     if (row.value == -1 || child.value == "twisty")return;
  106.     var val = tree.view.getCellValue(row.value, col.value);
  107.     if(val){
  108.       if(val.indexOf("fd")==0){//folder
  109.         var fnd=val.match(/fd(\d+)-/);
  110.         if(fnd){
  111.           if(col.value.id=="col0"){
  112.             this.nsIWebMailNotifier.openMail(fnd[1],document.getElementById("lb"+val).getAttribute("label"));
  113.           }else this.nsIWebMailNotifier.checkMail(fnd[1]);
  114.         }
  115.       }else{
  116.         if(col.value.id=="col0")this.nsIWebMailNotifier.openMail(val,null);
  117.         else this.nsIWebMailNotifier.checkMail(val);
  118.       }
  119.     }
  120.   },
  121.   onStateChange: function(aIndex,aCount,aData){
  122. //dout(aIndex+" "+aCount+" "+aData);
  123. //      var ar=wmn.nsIWebMailNotifier.getAccountInfo({},aIndex);
  124. //dout(ar);
  125.     if(aIndex==Components.interfaces.nsIWebMailNotifier.ST_INIT){
  126.       this.init();
  127.       return;
  128.     }else if(aIndex==Components.interfaces.nsIWebMailNotifier.ST_SHOWICON){
  129.       return;
  130.     }else if(aIndex==Components.interfaces.nsIWebMailNotifier.ST_RESET){//accounts change
  131.       this.init();
  132.       return;
  133.     }
  134.     var em=document.getElementById(aIndex);
  135.     var obj=decodeObject(aData);
  136.     em.setAttribute("label",obj.desc);
  137.     var em2=document.getElementById("lb"+aIndex);
  138.     var prop=aCount>0?"newMail":(aCount==0?"noMail":"logoff");
  139.     em.setAttribute("properties",prop);
  140.     em2.setAttribute("properties","label "+prop);
  141.     em.parentNode.setAttribute("properties",prop);//treerow
  142.     var ti=document.getElementById("cnt"+aIndex);//container
  143.     if(ti.childNodes.length>1){
  144.       var tr=ti.firstChild;
  145.       while(ti.firstChild) {
  146.         ti.removeChild(ti.firstChild);
  147.       }
  148.       ti.appendChild(tr);
  149.     }
  150.     if(obj.folders){
  151.       ti.setAttribute("container",true);
  152.       ti.setAttribute("open",true);
  153.       var tch=document.createElement("treechildren");
  154.       ti.appendChild(tch);
  155.       var ar=decodeArray(obj.folders);
  156.       for(var i=0;i<ar.length;i+=2){
  157.         var ind="fd"+aIndex+"-"+parseInt(i/2)
  158.         var em=this.createItem(ar[i],ind);
  159.         //em.firstChild.setAttribute("properties","noSelect");
  160.         tch.appendChild(em);
  161.         var tc=document.getElementById(ind);
  162.         tc.setAttribute("label",ar[i+1]);
  163.         //tc.setAttribute("properties","noSelect");
  164.       }
  165.     }else{
  166.       ti.removeAttribute("container");
  167.     }
  168.   },
  169.   openMails: function(aEvent){
  170.     if(aEvent && (aEvent.button==1 || (aEvent.button==0&&aEvent.shiftKey))){
  171.       this.nsIWebMailNotifier.openNewWindow();
  172.       return;
  173.     }
  174.     var openAll=aEvent && (aEvent.button == 0&&(aEvent.altKey||aEvent.metaKey));
  175.     this.nsIWebMailNotifier.openMails(openAll);  
  176.   }
  177. }
  178.  
  179. function startup() {
  180.   try {
  181.     wmnSb.nsIWebMailNotifier = Components.classes["@mozilla.org/WebMailNotifier;1"]
  182.                                                 .getService(Components.interfaces.nsIWebMailNotifier);
  183.     wmnSb.nsIWebMailNotifier.addListener(wmnSb);                                                                                                  
  184.   } catch (e){
  185. dout(e);
  186.   }  
  187. }
  188.  
  189. function shutdown() {
  190.   wmnSb.nsIWebMailNotifier.removeListener(wmnSb);
  191. }
  192.  
  193. window.addEventListener("load", startup, false);
  194. window.addEventListener("unload", shutdown, false);
  195.